package com.ruoyi.fin.service;

import java.util.List;
import com.ruoyi.fin.domain.FinTransaction;

/**
 * 财务交易记录Service接口
 * 
 * @author ruoyi
 * @date 2025-06-19
 */
public interface IFinTransactionService 
{
    /**
     * 查询财务交易记录
     * 
     * @param id 财务交易记录主键
     * @return 财务交易记录
     */
    public FinTransaction selectFinTransactionById(Long id);

    /**
     * 查询财务交易记录列表
     * 
     * @param finTransaction 财务交易记录
     * @return 财务交易记录集合
     */
    public List<FinTransaction> selectFinTransactionList(FinTransaction finTransaction);

    /**
     * 新增财务交易记录
     * 
     * @param finTransaction 财务交易记录
     * @return 结果
     */
    public int insertFinTransaction(FinTransaction finTransaction);

    /**
     * 修改财务交易记录
     * 
     * @param finTransaction 财务交易记录
     * @return 结果
     */
    public int updateFinTransaction(FinTransaction finTransaction);

    /**
     * 批量删除财务交易记录
     * 
     * @param ids 需要删除的财务交易记录主键集合
     * @return 结果
     */
    public int deleteFinTransactionByIds(String ids);

    /**
     * 删除财务交易记录信息
     * 
     * @param id 财务交易记录主键
     * @return 结果
     */
    public int deleteFinTransactionById(Long id);
    
    /**
     * 从采购订单创建财务交易记录（支出）
     * 
     * @param purchaseOrderId 采购订单ID
     * @param accountId 账户ID，如果为null则使用默认账户
     * @return 结果
     */
    public int createTransactionFromPurchase(Long purchaseOrderId, Long accountId);
    
    /**
     * 从销售订单创建财务交易记录（收入）
     * 
     * @param salesOrderId 销售订单ID
     * @param accountId 账户ID，如果为null则使用默认账户
     * @return 结果
     */
    public int createTransactionFromSales(Long salesOrderId, Long accountId);
}
